/*
 * 
 * LegendShop 多用户商城系统
 * 
 *  版权所有,并保留所有权利。
 * 
 */
package com.legendshop.permission.service;

import java.util.List;

import com.legendshop.dao.support.PageSupport;
import com.legendshop.oa.model.Function;
import com.legendshop.oa.model.Permission;

/**
 * 权限服务类.
 *
 */
public interface FunctionService {
	
	/**
	 * 根据用户ID查询用户拥有的权限信息.
	 *
	 * @param userId the user id
	 * @return the function by user id
	 */
	public List<Function> getFunctionByUserId(Long userId);
	
	/**
	 * 保存权限和菜单的关联关系.
	 *
	 * @param funcId the func id
	 * @param menuId the menu id
	 * @return true, if successful
	 */
	public boolean saveFuncMenu(Long funcId,Long menuId);

	/**
	 * Gets the menu id s by func id.
	 *
	 * @param funcId ： 权限ID
	 * @return the menu id s by func id
	 */
	public List<Long> getMenuIdSByFuncId(Long funcId);
	

	
	/**
	 * 获得所有权限.
	 *
	 * @return the all function
	 */
	public List<Function> getAllFunction();
	
	/**
	 * 根据菜单ID获取相关联的资源.
	 *
	 * @param menuId the menu id
	 * @return the functions by menu id
	 */
	public List<Function> getFunctionsByMenuId(Long menuId);
	

	
	/**
	 * 根据用户ID查询用户拥有的系统权限信息.
	 *
	 * @param userId the user id
	 * @return the sys function by user id
	 */
	public List<Function> getSysFunctionByUserId(Long userId);
	
	/**
	 * 根据URL获取权限.
	 *
	 * @param url the url
	 * @return the functions by url
	 */
	public List<Function> getFunctionsByUrl(String url);
	
	/**
	 * 根据ID获取权限.
	 *
	 * @param url the url
	 * @return the functions by url
	 */
	public Function getFunctionsById(Long funcId);

	/**
	 * 根据权限加载所属用户 分页
	 * @param curPageNO
	 * @param userName
	 * @param funcId
	 * @return
	 */
	public PageSupport loadUserByFunction(String curPageNO, String userName, Long funcId);
	
	/**
	 * 根据角色加载所属用户 分页
	 * @param curPageNO
	 * @param userName
	 * @param funcId
	 * @return
	 */
	public PageSupport loadUserByRole(String curPageNO, String userName, Long roleId);

	/**
	 * 根据角色ID查找
	 * @param roleId
	 * @return
	 */
	public List<Permission> getPermissionByRoleId(Long roleId);

	/**
	 * 获取某个系统所有的权限
	 * @param appNo
	 * @return
	 */
	public List<Function> getAllFunction(String appNo);

	public List<Function> getFunctionByUserId(Long userId, String appNo);

	public List<Function> getSysFunctionByUserId(Long userId, String appNo);

	public List<Function> getSysFunctionByAppNo(String appNo);
}
